From 7982fa48faee99f9492dc44e9c976d5653d150cd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andreas=20V=C3=B6gele?= Date: Mon, 8 Mar 2021 14:08:50 +0100 Subject: [PATCH] Parse empty gx:coord elements in KML reader (#701) Add test for empty gx:coord elements --- kml.cc | 2 +- reference/track/opentracks.kml | 24 ++++++++++++++++++++++++ reference/track/opentracks~kml.gpx | 18 ++++++++++++++++++ testo.d/kml-read.test | 3 +++ 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 reference/track/opentracks.kml create mode 100644 reference/track/opentracks~kml.gpx diff --git a/kml.cc b/kml.cc index fbcafba07..48aa830c0 100644 --- a/kml.cc +++ b/kml.cc @@ -341,7 +341,7 @@ void KmlFormat::gx_trk_coord(xg_string args, const QXmlStreamAttributes* /*attrs double lat, lon, alt; int n = sscanf(CSTR(args), "%lf %lf %lf", &lon, &lat, &alt); - if (0 != n && 2 != n && 3 != n) { + if (EOF != n && 2 != n && 3 != n) { fatal(MYNAME ": coord field decode failure on \"%s\".\n", qPrintable(args)); } gx_trk_coords->append(std::make_tuple(n, lat, lon, alt)); diff --git a/reference/track/opentracks.kml b/reference/track/opentracks.kml new file mode 100644 index 000000000..5b02c9031 --- /dev/null +++ b/reference/track/opentracks.kml @@ -0,0 +1,24 @@ + + + + + + + +absolute +1 + +2021-03-02T09:30:40.993Z +2021-03-02T09:30:41.890Z +2021-03-02T12:34:53.912Z +2021-03-02T12:34:54.693Z + +8.970803 48.503537 405.01373291015625 +8.970829 48.503623 401.119873046875 + + + + + + diff --git a/reference/track/opentracks~kml.gpx b/reference/track/opentracks~kml.gpx new file mode 100644 index 000000000..ef3913263 --- /dev/null +++ b/reference/track/opentracks~kml.gpx @@ -0,0 +1,18 @@ + + + + + + Wurmlinger Kapelle + + + 405.014 + + + + 401.120 + + + + + diff --git a/testo.d/kml-read.test b/testo.d/kml-read.test index fbca3c5dd..3353edf64 100644 --- a/testo.d/kml-read.test +++ b/testo.d/kml-read.test @@ -16,3 +16,6 @@ compare ${REFERENCE}/track/google_ext~kml.gpx ${TMPDIR}/google_ext~kml.gpx gpsbabel -i kml -f ${REFERENCE}/track/skydrop.kml -o igc -F - | grep -v "^L" > ${TMPDIR}/skydrop~kml.igc compare ${REFERENCE}/track/skydrop~kml.igc ${TMPDIR}/skydrop~kml.igc +# Track with empty gx:coord elements. +gpsbabel -i kml -f ${REFERENCE}/track/opentracks.kml -o gpx -F ${TMPDIR}/opentracks~kml.gpx +compare ${REFERENCE}/track/opentracks~kml.gpx ${TMPDIR}/opentracks~kml.gpx -- 2.30.2